package lambdademo_0407;


        //无返回值无参数
@FunctionalInterface
interface NoParameterNoReturn {
    void test();
}
        //无返回值一个参数
@FunctionalInterface
interface OneParameterNoReturn {
    void test(int a);
}
        //无返回值多个参数
@FunctionalInterface
interface MoreParameterNoReturn {
    void test(int a,int b);
}
        //有返回值无参数
@FunctionalInterface
interface NoParameterReturn {
    int test();
}
//我们在上面提到过，Lambda表达式本质是一个匿名函数，函数的方法是：返回值 方法名 参数列表 方法体。在，
//Lambda表达式中我们只需要关心：参数列表 方法体。
//具体使用见以下示例代码：
//有返回值一个参数
@FunctionalInterface
interface OneParameterReturn {
    int test(int a);
}
       //有返回值多参数
@FunctionalInterface
interface MoreParameterReturn {
    int test(int a,int b);
}
public class Test {
    public static void main(String[] args) {
//        NoParameterNoReturn noParameterNoReturn = new NoParameterNoReturn() {
//            @Override
//            public void test() {
//                System.out.println("这是无参无返方法");
//            }
//        };

        NoParameterNoReturn noParameterNoReturn = () -> System.out.println("这是无参无返方法");
        noParameterNoReturn.test();

        System.out.println("===============");


//        OneParameterNoReturn oneParameterNoReturn = new OneParameterNoReturn() {
//            @Override
//            public void test(int a) {
//                System.out.println("有参无返方法,参数为：" + a );
//            }
//        };
        OneParameterNoReturn oneParameterNoReturn = x -> System.out.println("一参无返方法,参数为：" + x );
        oneParameterNoReturn.test(10);
        System.out.println("==============");



//        NoParameterReturn noParameterReturn = new NoParameterReturn() {
//            @Override
//            public int test() {
//                return 10;
//            }
//        };
        NoParameterReturn noParameterReturn = () -> 100;
        System.out.println("无参有返，返为" + noParameterReturn.test());

        System.out.println("===============");


//        OneParameterReturn oneParameterReturn = new OneParameterReturn() {
//            @Override
//            public int test(int a) {
//                return a + 10;
//            }
//        };
        OneParameterReturn oneParameterReturn = x -> x + 100;
        System.out.println("一参有返 " + oneParameterReturn.test(10));

        System.out.println("=======================");

//        MoreParameterNoReturn moreParameterNoReturn = new MoreParameterNoReturn() {
//            @Override
//            public void test(int a, int b) {
//                System.out.println("多参无返，参数为：" + a + "，" + b);
//            }
//        };
        MoreParameterNoReturn moreParameterNoReturn = (x,y) -> System.out.println("多参无返，参数为：" + x + "，" + y);
        moreParameterNoReturn.test(10,20);

        System.out.println("==========================");

//        MoreParameterReturn moreParameterReturn = new MoreParameterReturn() {
//            @Override
//            public int test(int a, int b) {
//                return a + b;
//            }
//        };
        MoreParameterReturn moreParameterReturn = (x,y) -> x + y;
        System.out.println("多参有返，返为：" + moreParameterReturn.test(30,40));
    }
}
